[HBase]07 Phoenix工具与盐表 七

Phoenix如何和HBase namespace映射、dbeaver的安装配置、盐表简述

Posted by 李玉坤 on 2017-10-08

Phoenix的schema与HBase的namespace

官网介绍:http://phoenix.apache.org/namspace_mapping.html

默认情况下在Phoenix中create schema 默认不会映射到namespace;需要在服务端和客户端都开启phoenix.schema.isNamespaceMappingEnabled

服务端:hbase-site.xml

1
2
3
4
5
6
7
8
<property>
<name>phoenix.schema.isNamespaceMappingEnabled</name>
<value>true</value>
</property>
<property>
<name>phoenix.schema.mapSystemTablesToNamespace</name>
<value>true</value>
</property>

如果之前没有设置以上参数,重新设置需要重启集群
stop-hbase.sh
start-hbase.sh

客户端【phoenix的bin目录下】:之前做了软连接 所以也有这2个参数

之后在Phoenix中create schema 就会映射到namespace

【注意】:基于这2个参数可以延申一个工作中需要注意的点;要看清楚其他组件(hadoop)文档的配置参数,要注意是server 还是 client;假如不清楚,在服务端和客户端都配置。

dbeaver

1、官网下载 https://dbeaver.io/
2、安装配置jdk1.8运行环境
3、安装dbesver(windows 直接下exe文件运行安装即可)
4、hosts文件配置 hbase的集群(window: C:\Windows\System32\drivers\etc)
5、下载Phoenix-client jar(使用sz命令或者xftp等工具)
phoenix-4.14.0-cdh5.14.2-client.jar 下载到window本地
6、选择连接phoenix

7、如果遇到 抛错Unexpected version format: XXX错误 即是jdk版本错误
到phoenix安装目录找到并修改dbeaver.ini文件,在第一行加上 本机java的bin路径

1
2
-vm
C:/Program Files/Java/jdk1.8.0_211/bin

盐表

盐表是一种特殊的预分区表:写之前加前缀,读之前去除前缀
官方文档:http://phoenix.apache.org/salted.html

1
2
3
4
5
6
create table my_schema.my_table 
(id integer primary key,
name varchar,
age integer,
address varchar)
salt_buckets = 20;

上诉SQL建表语句 salt_buckets = 20 代表本表会被切分为20块分散到20个region上;官网规定 salt_buckets :1~256 ;有一个不成文规定:regionserver 多少台 就设置多少,方便每个regionserver管理本表一个region;假如计划后期有加机器,可以预先设置好 salt_buckets,因为这个参数一旦设置好后不可更改


【注意】:hbase UI 界面中 Requests:读一次+1 写一次+1

  • 好处: 其实本质就是在rowkey前加随机数;有助于数据均匀的落在各个region–>各个节点,从而提供写的性能
  • 坏处
    【角度1】:
    1-1000 非盐表 数据在一个regionserver  查询性能高
    1-1000 盐表 数据在多个regionserver  查询性能低
    【角度2】:
    1-1KW 非盐表 数据在一个regionserver  查询性能低  
    1-1KW 盐表 数据在多个regionserver  查询性能高

【注意】:规划20个rs节点,salt_buckets=20;
数据量越来越多,新增了50台,salt_buckets=20–》70;phoenix是没有直接增加bucket的方法,只能先drop–>再create–>再导数据